/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frmProducto.java
 *
 * Created on 7/11/2011, 10:27:29 PM
 */

package Producto;

import Beans.CategoriaBean;
import Beans.IvaBean;
import Beans.LineaBean;
import Beans.MarcaBean;
import Beans.ProductoBean;
import Beans.ProductoPrecioBean;
import Beans.ProductoPrecioHistorialBean;
import Beans.ProveedorBean;
import Beans.TipoPrecioBean;
import Blogic.CategoriaBLogic;
import Blogic.IvaBLogic;
import Blogic.LineaBLogic;
import Blogic.MarcaBLogic;
import Blogic.ProductoBLogic;
import Blogic.ProductoPrecioBLogic;
import Blogic.ProductoPrecioHistorialBLogic;
import Blogic.ProveedorBLogic;
import Blogic.TipoPrecioBLogic;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import sun.awt.DefaultMouseInfoPeer;

/**
 *
 * @author orellana
 */
public class frmProducto extends javax.swing.JFrame {
    // Atributos de la Clase
    // Tipo Accion
    int tipoAccion=0;
    private String idProducto="";
    // Para la Tabla de Precios
    private String colPre []={"Tipo de Precio","Precio","Comision","idProductoPrecio"};
    public DefaultTableModel modelPrecios=new DefaultTableModel(colPre,0);
    // Para la Tabla Existencia de Productos
    private String colExiPre[]={"Clave","F.Compra","Cantidad","Factura","idExistenciaPrecio"};
    public DefaultTableModel modelColExiPre=new DefaultTableModel(colExiPre,0);
    // Para la Tabla de Historial Precios
    private String colHisPre[]={"Fecha de Modificacion","Precio","idHistPrecio"};
    public DefaultTableModel modelColHisPre=new DefaultTableModel(colHisPre,0);

    

    /** Creates new form frmProducto */
    public frmProducto(int tipo) {
        initComponents();
        // Definimos Posicion del formulario
        this.setLocationRelativeTo(null);
        // Definimos el Redimensionamiento
        this.setResizable(false);
        // Definimos cerrado del formulario
        this.setDefaultCloseOperation(HIDE_ON_CLOSE);
        // Definimos el Tamaño de las Columnas (Lista Precios)
        getTablaListarPrecios();
        // Definimos el Tamaño de las Columnas (Existencia Productos)
        getTablaListarExiPre();
        // Deinimos el Tamaño de las Columnas (Historial de Precios)
        getTablaListarHitPre();
        // Obtenemos Proveedores
        obtProveedores();
        // Obtenemos Linea de Productos
        obtLineaProductos();
        // Obtenemos IVA
        obtIva();
        // Cargamos los Datos por Default
        obtDatosDefault();
        // Seteamos el Titulo del Formulario
        switch(tipo){
            // Alta de Producto
            case 1:
                this.setTitle("Alta de Producto");
                jtpProducto.setTitleAt(0,"Alta de Producto");
                this.tipoAccion=1;
                // Obtenemos los Precios (Registro Nuevo)
                obtPreciosProducto();
                break;

            // Modificacion de Producto
            case 2:
                this.setTitle("Modificar Producto");
                jtpProducto.setTitleAt(0,"Modificar Producto");
                this.tipoAccion=2;
                break;
        }
    }

    // Metodos Publicos
    // Seteamos el Identificador del Producto
    public void setIdProducto(String idProducto){
        this.idProducto=idProducto;
    }

    // Obtenemos los Datos del Producto
    public void obtDatosProducto(){
        // Variables Locales
        Vector datoProducto=new Vector();
        ProductoBean sqlBean=new ProductoBean();
        ProductoBean detalleDatoProducto=new ProductoBean();
        ProveedorBean sqlBeanProveedor=new ProveedorBean();
        Vector datoProveedor=new Vector();
        LineaBean sqlBeanLineaProducto=new LineaBean();
        Vector datoLineaProducto=new Vector();
        CategoriaBean sqlBeanCategoria=new CategoriaBean();
        Vector datoCategoria=new Vector();
        MarcaBean sqlBeanMarca=new MarcaBean();
        Vector datoMarca=new Vector();
        IvaBean sqlBeanIva=new IvaBean();
        Vector datoIva=new Vector();
        ProductoPrecioBean sqlBeanProductoPrecio=new ProductoPrecioBean();
        Vector datoProductoPrecios=new Vector();
        TipoPrecioBean sqlBeanTipoPrecio=new TipoPrecioBean();
        Vector datoTipoPrecio=new Vector();
        ProductoPrecioHistorialBean sqlBeanProductoPrecioHistorial=new ProductoPrecioHistorialBean();
        Vector datoProductoPrecioHistorial=new Vector();

        // Datos Producto
        // Seteamos los Datos
        sqlBean.setIdProducto(idProducto);
        // Realizamos la Consulta
        datoProducto=(new ProductoBLogic()).getDatosProducto(sqlBean);
        detalleDatoProducto=(ProductoBean) datoProducto.elementAt(0);
        // Vaciamos los Datos
        txtClaveProducto.setText(detalleDatoProducto.getClaveProducto());
        txtNombre.setText(detalleDatoProducto.getNombreProducto());
        txtMaximo.setText(detalleDatoProducto.getMax());
        txtMinimo.setText(detalleDatoProducto.getMin());
        txtPrecioCosto.setText(detalleDatoProducto.getPrecioCosto());
        txtPrecioVenta.setText(detalleDatoProducto.getPrecioVenta());
        txtDescuento.setText(detalleDatoProducto.getDescuento());
        txtPrecioIva.setText(detalleDatoProducto.getPrecioVentaIva());

        // Obtenemos el Proveedor
        // Seteamos los Datos
        sqlBeanProveedor.setIdProveedor(detalleDatoProducto.getIdProveedor());
        datoProveedor=(new ProveedorBLogic()).getDatosProveedor(sqlBeanProveedor);
        sqlBeanProveedor=(ProveedorBean) datoProveedor.elementAt(0);
        // Vaciamos los Datos
        jcbProveedor.setSelectedItem(sqlBeanProveedor.getNombreProveedor());

        // Obtenemos Linea de Producto
        // Seteamos los Datos
        sqlBeanLineaProducto.setIdLinea(detalleDatoProducto.getIdLineaProducto());
        datoLineaProducto=(new LineaBLogic()).getDatosLinea(sqlBeanLineaProducto);
        sqlBeanLineaProducto=(LineaBean) datoLineaProducto.elementAt(0);
        // Vaciamos los Datos
        jcbLineaProducto.setSelectedItem(sqlBeanLineaProducto.getNombreLinea());

        // Obtenemos Categoria
        // Seteamos los Datos
        sqlBeanCategoria.setIdCategoria(detalleDatoProducto.getIdCategoria());
        datoCategoria=(new CategoriaBLogic()).getDatosCategoria(sqlBeanCategoria);
        sqlBeanCategoria=(CategoriaBean) datoCategoria.elementAt(0);
        // Vaciamos los Datos
        jcbCategoria.setSelectedItem(sqlBeanCategoria.getNombreCategoria());

        // Obtenemos la Marca
        // Seteamos los Datos
        sqlBeanMarca.setIdMarca(detalleDatoProducto.getIdMarca());
        datoMarca=(new MarcaBLogic()).getDatosMarca(sqlBeanMarca);
        sqlBeanMarca=(MarcaBean) datoMarca.elementAt(0);
        // Vaciamos los Datos
        jcbMarca.setSelectedItem(sqlBeanMarca.getNombreMarca());

        // Obtenemos el Iva
        // Seteamos los Datos
        sqlBeanIva.setIdIva(detalleDatoProducto.getIdIva());
        datoIva=(new IvaBLogic()).getNombreIvaById(sqlBeanIva);
        sqlBeanIva=(IvaBean) datoIva.elementAt(0);
        // Vaciamos los Datos
        jcbIva.setSelectedItem(sqlBeanIva.getNombreIva());

        // Obtenemos los Precios del Producto
        sqlBeanProductoPrecio.setIdProducto(idProducto);
        datoProductoPrecios=(new ProductoPrecioBLogic()).getPreciosProductoId(sqlBeanProductoPrecio);
        // Evaluamos el Resultado Obtenido
        if (datoProductoPrecios.size()!=0){
            // Ciclo FOR
            for (int i=0;i<datoProductoPrecios.size();i++){
                ProductoPrecioBean datosProductosPrecios=new ProductoPrecioBean();
                datosProductosPrecios=(ProductoPrecioBean) datoProductoPrecios.elementAt(i);
                // Vaciamos los Precios
                modelPrecios.addRow(new Object[]{datosProductosPrecios.getTipoPrecio(),datosProductosPrecios.getPrecio(),datosProductosPrecios.getComision(),datosProductosPrecios.getIdProductoPrecio()});
                // Centramos Columnas Tabla
                tblListaPrecio.getColumnModel().getColumn(0).setCellRenderer(obtAttrTableCenterData());
            }
        }else{
            // Obtenemos Valores por Default Precios
            datoTipoPrecio=(new TipoPrecioBLogic()).getListaTipoPrecios(sqlBeanTipoPrecio);
            // Ciclo FOR
            for (int i=0;i<datoTipoPrecio.size();i++){
                TipoPrecioBean datosTiposPrecios=new TipoPrecioBean();
                datosTiposPrecios=(TipoPrecioBean) datoTipoPrecio.elementAt(i);
                // Vaciamos los Precios
                modelPrecios.addRow(new Object[]{datosTiposPrecios.getNombreTipoPrecio(),"0.00","0.00",datosTiposPrecios.getIdTipoPrecio()});
                // Centramos Columnas Tabla
                tblListaPrecio.getColumnModel().getColumn(0).setCellRenderer(obtAttrTableCenterData());
            }
        }

        // Obtenemos el Historial de Precios del Producto
        sqlBeanProductoPrecioHistorial.setIdProducto(idProducto);
        datoProductoPrecioHistorial=(new ProductoPrecioHistorialBLogic()).getPrecioHistorialById(sqlBeanProductoPrecioHistorial);
        // Evaluamos el Resultado Obtenido
        if (datoProductoPrecioHistorial.size()!=0){
            // Ciclo FOR
            for (int i=0;i<datoProductoPrecioHistorial.size();i++){
                ProductoPrecioHistorialBean datosProductosPreciosHistorial=new ProductoPrecioHistorialBean();
                datosProductosPreciosHistorial=(ProductoPrecioHistorialBean) datoProductoPrecioHistorial.elementAt(i);
                // Vaciamos el Historial de Precios
                modelColHisPre.addRow(new Object[]{datosProductosPreciosHistorial.getFechaAlta().substring(0,16),datosProductosPreciosHistorial.getPrecioCosto(),datosProductosPreciosHistorial.getIdProductoPrecioHistorial()});
                // Centramos Columnas Tabla
                tblHistorialPrecio.getColumnModel().getColumn(0).setCellRenderer(obtAttrTableCenterData());
            }
        }

        // Desactivacion de Campos
        tblHistorialPrecio.setEnabled(false);
    }

    // Metodos Privados
    private void getTablaListarPrecios(){
        // Vaciamos el Modelo con los Datos
        tblListaPrecio.setModel(modelPrecios);
        // Definimos el Tamaño de las Columnas
        // Tipo de Precio
        tblListaPrecio.getColumnModel().getColumn(0).setPreferredWidth(120);
        // Precio
        tblListaPrecio.getColumnModel().getColumn(1).setPreferredWidth(120);
        // Comision
        tblListaPrecio.getColumnModel().getColumn(2).setPreferredWidth(120);
        // idProductoPrecio
        tblListaPrecio.getColumnModel().getColumn(3).setMinWidth(0);
        tblListaPrecio.getColumnModel().getColumn(3).setMaxWidth(0);
    }

    private void getTablaListarExiPre(){
        // Vaciamos el Modelo con los Datos
        tblListaExistencia.setModel(modelColExiPre);
        // Definimos el Tamaño de las Columnas
        // Codigo Barras
        tblListaExistencia.getColumnModel().getColumn(0).setPreferredWidth(160);
        // Fecha de Compra
        tblListaExistencia.getColumnModel().getColumn(1).setPreferredWidth(80);
        // Cantidad
        tblListaExistencia.getColumnModel().getColumn(2).setPreferredWidth(42);
        // Factura
        tblListaExistencia.getColumnModel().getColumn(3).setPreferredWidth(70);
        // idExistenciaPrecio
        tblListaExistencia.getColumnModel().getColumn(4).setMinWidth(0);
        tblListaExistencia.getColumnModel().getColumn(4).setMaxWidth(0);
    }

    private void getTablaListarHitPre(){
        // Vaciamos el Modelo con los Datos
        tblHistorialPrecio.setModel(modelColHisPre);
        // Definimops el Tamaño de as Columnas
        // Fecha Modificacion
        tblHistorialPrecio.getColumnModel().getColumn(0).setPreferredWidth(160);
        // Precio
        tblHistorialPrecio.getColumnModel().getColumn(1).setPreferredWidth(160);
        // idHistPrecio
        tblHistorialPrecio.getColumnModel().getColumn(2).setMinWidth(0);
        tblHistorialPrecio.getColumnModel().getColumn(2).setMaxWidth(0);
    }

    // Obtenemos Proveedores
    private void obtProveedores(){
        // Variables Locales
        ProveedorBean sqlBean=new ProveedorBean();
        Vector proveedores=new Vector();

        // Ejecutamos la Consulta
        proveedores=(new ProveedorBLogic()).getDatosProveedores(sqlBean);
        // Agregamos el Valor Por Default
        jcbProveedor.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<proveedores.size();i++){
            ProveedorBean datoProveedores=new ProveedorBean();
            datoProveedores=(ProveedorBean) proveedores.elementAt(i);
            // Agregamos los Datos
            jcbProveedor.addItem(datoProveedores.getNombreProveedor());
        }
    }

    // Obtenemos Linea de Productos
    private void obtLineaProductos(){
        // Variables Locales
        LineaBean sqlBean=new LineaBean();
        Vector lineaProductos=new Vector();

        // Ejecutamos la Consulta
        lineaProductos=(new LineaBLogic()).getDatosLineas(sqlBean);
        // Agregamos el Valor Por Default
        jcbLineaProducto.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<lineaProductos.size();i++){
            LineaBean datoLineasProductos=new LineaBean();
            datoLineasProductos=(LineaBean) lineaProductos.elementAt(i);
            // Agregamos los Datos
            jcbLineaProducto.addItem(datoLineasProductos.getNombreLinea());
        }

        // Definimos la Accion del Combo
        jcbLineaProducto.setActionCommand("cmbLineaProducto");
        jcbLineaProducto.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // Accion jcbLineaProducto
                if (e.getActionCommand().equals("cmbLineaProducto")){
                    // Obtenemos las Categorias
                    obtCategorias();
                }
            }
        });
    }

    // Obtenemos Categorias
    private void obtCategorias(){
        // Variables Locales
        CategoriaBean sqlBeanCategoria=new CategoriaBean();
        Vector categorias=new Vector();
        LineaBean sqlBeanLinea=new LineaBean();
        Vector lineaProductos=new Vector();

        // Limpiamos jcbCategoria
        jcbCategoria.removeAllItems();
        // Obtenemos el Id Linea de Productos
        // Seteamos los Datos
        sqlBeanLinea.setNombreLinea(jcbLineaProducto.getSelectedItem().toString());
        lineaProductos=(new LineaBLogic()).getIdLinea(sqlBeanLinea);
        // Vaciamos los Datos
        sqlBeanLinea=(LineaBean) lineaProductos.elementAt(0);

        // Obtenemos las Categorias
        // Seteamos los Datos
        sqlBeanCategoria.setIdLineaProducto(sqlBeanLinea.getIdLinea());
        categorias=(new CategoriaBLogic()).getDatosCategoriasByIdLineaProducto(sqlBeanCategoria);
        // Agregamos el Valor Por Default
        jcbCategoria.addItem("Seleccione");
        // Vaciamos los Datos
        for(int i=0;i<categorias.size();i++){
            CategoriaBean datoCategorias=new CategoriaBean();
            datoCategorias=(CategoriaBean) categorias.elementAt(i);
            // Agregamos los Datos
            jcbCategoria.addItem(datoCategorias.getNombreCategoria());
        }

        // Definimos la Accion del Combo
        jcbCategoria.setActionCommand("cmbCategoria");
        jcbCategoria.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // Accion jcbCategoria
                if (e.getActionCommand().equals("cmbCategoria")){
                    // Obtenemos las Marcas
                    obtMarcas();
                }
            }
        });
    }

    // Obtenemos Marcas
    private void obtMarcas(){
        // Variables Locales
        MarcaBean sqlBeanMarca=new MarcaBean();
        Vector marcas=new Vector();
        CategoriaBean sqlBeanCategoria=new CategoriaBean();
        Vector categorias=new Vector();

        // Limpiamos jcbMarca
        jcbMarca.removeAllItems();
        // Obtenemos el Id de Categoria
        // Seteamos los Datos
        sqlBeanCategoria.setNombreCategoria(jcbCategoria.getSelectedItem().toString());
        categorias=(new CategoriaBLogic()).getIdCategoria(sqlBeanCategoria);
        // Vaciamos los Datos
        sqlBeanCategoria=(CategoriaBean) categorias.elementAt(0);

        // Obtenemos las Marcas
        sqlBeanMarca.setIdCategoria(sqlBeanCategoria.getIdCategoria());
        marcas=(new MarcaBLogic()).getDatosMarcaByIdCategoria(sqlBeanMarca);
        // Agregamos el Valor Por Default
        jcbMarca.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<marcas.size();i++){
            MarcaBean datoMarcas=new MarcaBean();
            datoMarcas=(MarcaBean) marcas.elementAt(i);
            // Agregamos los Datos
            jcbMarca.addItem(datoMarcas.getNombreMarca());
        }
    }

    // Obtenemos IVA
    private void obtIva(){
        // Variables Locates
        IvaBean sqlBeanIva=new IvaBean();
        Vector ivas=new Vector();

        // Obtenemos el Iva
        ivas=(new IvaBLogic()).getDatosIva(sqlBeanIva);
        // Agregamos el Valor Por Default
        jcbIva.addItem("Seleccione");
        // Vaciamo los Datos
        for (int i=0;i<ivas.size();i++){
            IvaBean datoIvas=new IvaBean();
            datoIvas=(IvaBean) ivas.elementAt(i);
            // Agregamos los Datos
            jcbIva.addItem(datoIvas.getNombreIva());
        }
    }

    // Obtenemos los Datos por Default
    private void obtDatosDefault(){
        // Cantidad Maxima
        txtMaximo.setText("0");
        // Cantidad Minima
        txtMinimo.setText("0");
        // Precio Costo
        txtPrecioCosto.setText("0.00");
        // Precio de Venta
        txtPrecioVenta.setText("0.00");
        // Descuento
        txtDescuento.setText("0.00");
        // Categoria
        jcbCategoria.addItem("Seleccione");
        // Marca
        jcbMarca.addItem("Seleccione");
        // Precio (c/iva)
        txtPrecioIva.setText("0.00");
    }

    // Obtenemos el Redondeo de un Numero
    private double round(Double numero, int decimales){
        // Retornamos la Cantidad Redondeada
        return Math.round(numero*Math.pow(10,decimales))/Math.pow(10,decimales);
    }

    // Obtenemos los Precios
    private void obtPreciosProducto(){
        // Variables Locales
        TipoPrecioBean sqlBeanTipoPrecio=new TipoPrecioBean();
        Vector tiposPrecios=new Vector();

        // Obtenemos los Tipos de Precio
        tiposPrecios=(new TipoPrecioBLogic()).getListaTipoPrecios(sqlBeanTipoPrecio);
        // Validamos Registros Encontrados
        for (int i=0;i<tiposPrecios.size();i++){
            TipoPrecioBean datoTiposPrecios=new TipoPrecioBean();
            datoTiposPrecios=(TipoPrecioBean) tiposPrecios.elementAt(i);
            // Vaciamos los Datos
            modelPrecios.addRow(new Object[]{datoTiposPrecios.getNombreTipoPrecio(),"0.00","0.00",datoTiposPrecios.getIdTipoPrecio()});
            // Centramos Columnas Tabla
            tblListaPrecio.getColumnModel().getColumn(0).setCellRenderer(obtAttrTableCenterData());
        }
    }

    // Obtenemos Atributos de la Tabla (Centrar Datos)
    private DefaultTableCellRenderer obtAttrTableCenterData(){
        // Variables Locales
        DefaultTableCellRenderer tcr=new DefaultTableCellRenderer();
        // Seteamos los Atributos
        tcr.setHorizontalAlignment(SwingConstants.CENTER);
        // Retornamos el Valor
        return tcr;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        btnGuardar = new javax.swing.JButton();
        btnSalir = new javax.swing.JButton();
        jtpProducto = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        txtClaveProducto = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        txtNombre = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jcbProveedor = new javax.swing.JComboBox();
        jLabel5 = new javax.swing.JLabel();
        jcbCategoria = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();
        jcbMarca = new javax.swing.JComboBox();
        jLabel7 = new javax.swing.JLabel();
        jcbIva = new javax.swing.JComboBox();
        jLabel8 = new javax.swing.JLabel();
        txtPrecioCosto = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        txtMaximo = new javax.swing.JTextField();
        jLabel19 = new javax.swing.JLabel();
        txtMinimo = new javax.swing.JTextField();
        jcbLineaProducto = new javax.swing.JComboBox();
        jLabel20 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jLabel24 = new javax.swing.JLabel();
        txtPrecioVenta = new javax.swing.JTextField();
        jLabel25 = new javax.swing.JLabel();
        txtPrecioIva = new javax.swing.JTextField();
        jLabel26 = new javax.swing.JLabel();
        cmdCalcularPrecio = new javax.swing.JButton();
        jLabel28 = new javax.swing.JLabel();
        txtDescuento = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jLabel16 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblListaPrecio = new javax.swing.JTable();
        jPanel3 = new javax.swing.JPanel();
        jLabel17 = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblListaExistencia = new javax.swing.JTable();
        jPanel4 = new javax.swing.JPanel();
        jLabel21 = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblHistorialPrecio = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(sistemapegasso.SistemaPegassoApp.class).getContext().getResourceMap(frmProducto.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setName("Form"); // NOI18N

        jToolBar1.setFloatable(false);
        jToolBar1.setRollover(true);
        jToolBar1.setName("jToolBar1"); // NOI18N

        btnGuardar.setIcon(resourceMap.getIcon("btnGuardar.icon")); // NOI18N
        btnGuardar.setText(resourceMap.getString("btnGuardar.text")); // NOI18N
        btnGuardar.setToolTipText(resourceMap.getString("btnGuardar.toolTipText")); // NOI18N
        btnGuardar.setBorderPainted(false);
        btnGuardar.setContentAreaFilled(false);
        btnGuardar.setFocusPainted(false);
        btnGuardar.setFocusable(false);
        btnGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnGuardar.setName("btnGuardar"); // NOI18N
        btnGuardar.setPreferredSize(new java.awt.Dimension(28, 34));
        btnGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });
        jToolBar1.add(btnGuardar);

        btnSalir.setIcon(resourceMap.getIcon("btnSalir.icon")); // NOI18N
        btnSalir.setText(resourceMap.getString("btnSalir.text")); // NOI18N
        btnSalir.setToolTipText(resourceMap.getString("btnSalir.toolTipText")); // NOI18N
        btnSalir.setBorderPainted(false);
        btnSalir.setContentAreaFilled(false);
        btnSalir.setFocusPainted(false);
        btnSalir.setFocusable(false);
        btnSalir.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnSalir.setName("btnSalir"); // NOI18N
        btnSalir.setPreferredSize(new java.awt.Dimension(28, 34));
        btnSalir.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalirActionPerformed(evt);
            }
        });
        jToolBar1.add(btnSalir);

        jtpProducto.setFont(resourceMap.getFont("jtpProducto.font")); // NOI18N
        jtpProducto.setName("jtpProducto"); // NOI18N

        jPanel1.setName("jPanel1"); // NOI18N

        jLabel1.setBackground(resourceMap.getColor("jLabel1.background")); // NOI18N
        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setForeground(resourceMap.getColor("jLabel1.foreground")); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N
        jLabel1.setOpaque(true);

        jLabel2.setFont(resourceMap.getFont("jLabel2.font")); // NOI18N
        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        txtClaveProducto.setFont(resourceMap.getFont("txtClaveProducto.font")); // NOI18N
        txtClaveProducto.setText(resourceMap.getString("txtClaveProducto.text")); // NOI18N
        txtClaveProducto.setName("txtClaveProducto"); // NOI18N

        jLabel3.setFont(resourceMap.getFont("jLabel3.font")); // NOI18N
        jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
        jLabel3.setName("jLabel3"); // NOI18N

        txtNombre.setFont(resourceMap.getFont("txtNombre.font")); // NOI18N
        txtNombre.setText(resourceMap.getString("txtNombre.text")); // NOI18N
        txtNombre.setName("txtNombre"); // NOI18N
        txtNombre.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtNombreFocusLost(evt);
            }
        });

        jLabel4.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N
        jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
        jLabel4.setName("jLabel4"); // NOI18N

        jcbProveedor.setFont(resourceMap.getFont("jcbProveedor.font")); // NOI18N
        jcbProveedor.setName("jcbProveedor"); // NOI18N

        jLabel5.setFont(resourceMap.getFont("jLabel5.font")); // NOI18N
        jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
        jLabel5.setName("jLabel5"); // NOI18N

        jcbCategoria.setFont(resourceMap.getFont("jcbCategoria.font")); // NOI18N
        jcbCategoria.setName("jcbCategoria"); // NOI18N
        jcbCategoria.setPreferredSize(new java.awt.Dimension(196, 21));

        jLabel6.setFont(resourceMap.getFont("jLabel6.font")); // NOI18N
        jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N
        jLabel6.setName("jLabel6"); // NOI18N

        jcbMarca.setFont(resourceMap.getFont("jcbMarca.font")); // NOI18N
        jcbMarca.setName("jcbMarca"); // NOI18N
        jcbMarca.setPreferredSize(new java.awt.Dimension(196, 21));

        jLabel7.setFont(resourceMap.getFont("jLabel7.font")); // NOI18N
        jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
        jLabel7.setName("jLabel7"); // NOI18N

        jcbIva.setFont(resourceMap.getFont("jcbIva.font")); // NOI18N
        jcbIva.setName("jcbIva"); // NOI18N
        jcbIva.setPreferredSize(new java.awt.Dimension(196, 21));

        jLabel8.setFont(resourceMap.getFont("jLabel8.font")); // NOI18N
        jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
        jLabel8.setName("jLabel8"); // NOI18N

        txtPrecioCosto.setFont(resourceMap.getFont("txtPrecioCosto.font")); // NOI18N
        txtPrecioCosto.setText(resourceMap.getString("txtPrecioCosto.text")); // NOI18N
        txtPrecioCosto.setName("txtPrecioCosto"); // NOI18N

        jLabel9.setFont(resourceMap.getFont("jLabel9.font")); // NOI18N
        jLabel9.setForeground(resourceMap.getColor("jLabel9.foreground")); // NOI18N
        jLabel9.setText(resourceMap.getString("jLabel9.text")); // NOI18N
        jLabel9.setName("jLabel9"); // NOI18N

        jLabel10.setFont(resourceMap.getFont("jLabel10.font")); // NOI18N
        jLabel10.setForeground(resourceMap.getColor("jLabel10.foreground")); // NOI18N
        jLabel10.setText(resourceMap.getString("jLabel10.text")); // NOI18N
        jLabel10.setName("jLabel10"); // NOI18N

        jLabel11.setFont(resourceMap.getFont("jLabel11.font")); // NOI18N
        jLabel11.setForeground(resourceMap.getColor("jLabel11.foreground")); // NOI18N
        jLabel11.setText(resourceMap.getString("jLabel11.text")); // NOI18N
        jLabel11.setName("jLabel11"); // NOI18N

        jLabel12.setFont(resourceMap.getFont("jLabel12.font")); // NOI18N
        jLabel12.setForeground(resourceMap.getColor("jLabel12.foreground")); // NOI18N
        jLabel12.setText(resourceMap.getString("jLabel12.text")); // NOI18N
        jLabel12.setName("jLabel12"); // NOI18N

        jLabel13.setFont(resourceMap.getFont("jLabel13.font")); // NOI18N
        jLabel13.setForeground(resourceMap.getColor("jLabel13.foreground")); // NOI18N
        jLabel13.setText(resourceMap.getString("jLabel13.text")); // NOI18N
        jLabel13.setName("jLabel13"); // NOI18N

        jLabel14.setFont(resourceMap.getFont("jLabel14.font")); // NOI18N
        jLabel14.setForeground(resourceMap.getColor("jLabel14.foreground")); // NOI18N
        jLabel14.setText(resourceMap.getString("jLabel14.text")); // NOI18N
        jLabel14.setName("jLabel14"); // NOI18N

        jLabel15.setFont(resourceMap.getFont("jLabel15.font")); // NOI18N
        jLabel15.setForeground(resourceMap.getColor("jLabel15.foreground")); // NOI18N
        jLabel15.setText(resourceMap.getString("jLabel15.text")); // NOI18N
        jLabel15.setName("jLabel15"); // NOI18N

        jLabel18.setFont(resourceMap.getFont("jLabel18.font")); // NOI18N
        jLabel18.setText(resourceMap.getString("jLabel18.text")); // NOI18N
        jLabel18.setName("jLabel18"); // NOI18N

        txtMaximo.setFont(resourceMap.getFont("txtMaximo.font")); // NOI18N
        txtMaximo.setName("txtMaximo"); // NOI18N
        txtMaximo.setPreferredSize(new java.awt.Dimension(10, 21));

        jLabel19.setFont(resourceMap.getFont("jLabel19.font")); // NOI18N
        jLabel19.setText(resourceMap.getString("jLabel19.text")); // NOI18N
        jLabel19.setName("jLabel19"); // NOI18N

        txtMinimo.setFont(resourceMap.getFont("txtMinimo.font")); // NOI18N
        txtMinimo.setName("txtMinimo"); // NOI18N
        txtMinimo.setPreferredSize(new java.awt.Dimension(10, 21));

        jcbLineaProducto.setFont(resourceMap.getFont("jcbLineaProducto.font")); // NOI18N
        jcbLineaProducto.setName("jcbLineaProducto"); // NOI18N
        jcbLineaProducto.setPreferredSize(new java.awt.Dimension(196, 21));

        jLabel20.setFont(resourceMap.getFont("jLabel20.font")); // NOI18N
        jLabel20.setText(resourceMap.getString("jLabel20.text")); // NOI18N
        jLabel20.setName("jLabel20"); // NOI18N

        jLabel22.setFont(resourceMap.getFont("jLabel22.font")); // NOI18N
        jLabel22.setForeground(resourceMap.getColor("jLabel22.foreground")); // NOI18N
        jLabel22.setText(resourceMap.getString("jLabel22.text")); // NOI18N
        jLabel22.setName("jLabel22"); // NOI18N

        jLabel23.setFont(resourceMap.getFont("jLabel23.font")); // NOI18N
        jLabel23.setForeground(resourceMap.getColor("jLabel23.foreground")); // NOI18N
        jLabel23.setText(resourceMap.getString("jLabel23.text")); // NOI18N
        jLabel23.setName("jLabel23"); // NOI18N

        jLabel24.setFont(resourceMap.getFont("jLabel24.font")); // NOI18N
        jLabel24.setText(resourceMap.getString("jLabel24.text")); // NOI18N
        jLabel24.setName("jLabel24"); // NOI18N

        txtPrecioVenta.setFont(resourceMap.getFont("txtPrecioVenta.font")); // NOI18N
        txtPrecioVenta.setText(resourceMap.getString("txtPrecioVenta.text")); // NOI18N
        txtPrecioVenta.setEnabled(false);
        txtPrecioVenta.setName("txtPrecioVenta"); // NOI18N

        jLabel25.setFont(resourceMap.getFont("jLabel25.font")); // NOI18N
        jLabel25.setForeground(resourceMap.getColor("jLabel25.foreground")); // NOI18N
        jLabel25.setText(resourceMap.getString("jLabel25.text")); // NOI18N
        jLabel25.setName("jLabel25"); // NOI18N

        txtPrecioIva.setFont(resourceMap.getFont("txtPrecioIva.font")); // NOI18N
        txtPrecioIva.setText(resourceMap.getString("txtPrecioIva.text")); // NOI18N
        txtPrecioIva.setEnabled(false);
        txtPrecioIva.setName("txtPrecioIva"); // NOI18N

        jLabel26.setFont(resourceMap.getFont("jLabel26.font")); // NOI18N
        jLabel26.setText(resourceMap.getString("jLabel26.text")); // NOI18N
        jLabel26.setName("jLabel26"); // NOI18N

        cmdCalcularPrecio.setFont(resourceMap.getFont("cmdCalcularPrecio.font")); // NOI18N
        cmdCalcularPrecio.setText(resourceMap.getString("cmdCalcularPrecio.text")); // NOI18N
        cmdCalcularPrecio.setName("cmdCalcularPrecio"); // NOI18N
        cmdCalcularPrecio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdCalcularPrecioActionPerformed(evt);
            }
        });

        jLabel28.setFont(resourceMap.getFont("jLabel28.font")); // NOI18N
        jLabel28.setText(resourceMap.getString("jLabel28.text")); // NOI18N
        jLabel28.setName("jLabel28"); // NOI18N

        txtDescuento.setFont(resourceMap.getFont("txtDescuento.font")); // NOI18N
        txtDescuento.setText(resourceMap.getString("txtDescuento.text")); // NOI18N
        txtDescuento.setName("txtDescuento"); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel8)
                    .addComponent(jLabel18)
                    .addComponent(jLabel2)
                    .addComponent(jLabel20)
                    .addComponent(jLabel3)
                    .addComponent(jLabel4)
                    .addComponent(jLabel5)
                    .addComponent(jLabel6)
                    .addComponent(jLabel24)
                    .addComponent(jLabel28)
                    .addComponent(jLabel26)
                    .addComponent(jLabel7))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jcbMarca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel22))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(txtClaveProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel9))
                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jcbProveedor, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(txtNombre, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 320, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jcbLineaProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 232, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(12, 12, 12)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.LEADING)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jcbCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel13))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(txtMaximo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabel19)
                        .addGap(2, 2, 2)
                        .addComponent(txtMinimo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel23))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txtPrecioIva)
                            .addComponent(txtDescuento)
                            .addComponent(txtPrecioVenta)
                            .addComponent(jcbIva, javax.swing.GroupLayout.Alignment.TRAILING, 0, 0, Short.MAX_VALUE)
                            .addComponent(txtPrecioCosto, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel15)
                                    .addComponent(jLabel25))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(cmdCalcularPrecio))
                            .addComponent(jLabel14))))
                .addContainerGap(24, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(txtClaveProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel9))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel10))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel4)
                            .addComponent(jcbProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel20)
                            .addComponent(jcbLineaProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel12)))
                    .addComponent(jLabel11))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(jcbCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel13))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jcbMarca, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel6)
                    .addComponent(jLabel22))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel18)
                    .addComponent(txtMaximo, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel19)
                    .addComponent(txtMinimo, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel23))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel8)
                    .addComponent(txtPrecioCosto, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel15)
                    .addComponent(cmdCalcularPrecio, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jcbIva, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel14)
                    .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtPrecioVenta, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel24)
                    .addComponent(jLabel25))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel28)
                    .addComponent(txtDescuento, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel26)
                    .addComponent(txtPrecioIva, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(100, 100, 100))
        );

        jtpProducto.addTab(resourceMap.getString("jPanel1.TabConstraints.tabTitle"), jPanel1); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N

        jLabel16.setBackground(resourceMap.getColor("jLabel16.background")); // NOI18N
        jLabel16.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N
        jLabel16.setForeground(resourceMap.getColor("jLabel16.foreground")); // NOI18N
        jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel16.setText(resourceMap.getString("jLabel16.text")); // NOI18N
        jLabel16.setName("jLabel16"); // NOI18N
        jLabel16.setOpaque(true);

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        tblListaPrecio.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblListaPrecio.setName("tblListaPrecio"); // NOI18N
        jScrollPane1.setViewportView(tblListaPrecio);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel16, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel16)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
        );

        jtpProducto.addTab(resourceMap.getString("jPanel2.TabConstraints.tabTitle"), jPanel2); // NOI18N

        jPanel3.setName("jPanel3"); // NOI18N

        jLabel17.setBackground(resourceMap.getColor("jLabel17.background")); // NOI18N
        jLabel17.setFont(resourceMap.getFont("jLabel17.font")); // NOI18N
        jLabel17.setForeground(resourceMap.getColor("jLabel17.foreground")); // NOI18N
        jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel17.setText(resourceMap.getString("jLabel17.text")); // NOI18N
        jLabel17.setName("jLabel17"); // NOI18N
        jLabel17.setOpaque(true);

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        tblListaExistencia.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblListaExistencia.setName("tblListaExistencia"); // NOI18N
        jScrollPane2.setViewportView(tblListaExistencia);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel17)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
        );

        jtpProducto.addTab(resourceMap.getString("jPanel3.TabConstraints.tabTitle"), jPanel3); // NOI18N

        jPanel4.setName("jPanel4"); // NOI18N

        jLabel21.setBackground(resourceMap.getColor("jLabel21.background")); // NOI18N
        jLabel21.setFont(resourceMap.getFont("jLabel21.font")); // NOI18N
        jLabel21.setForeground(resourceMap.getColor("jLabel21.foreground")); // NOI18N
        jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel21.setText(resourceMap.getString("jLabel21.text")); // NOI18N
        jLabel21.setName("jLabel21"); // NOI18N
        jLabel21.setOpaque(true);

        jScrollPane3.setName("jScrollPane3"); // NOI18N

        tblHistorialPrecio.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblHistorialPrecio.setName("tblHistorialPrecio"); // NOI18N
        jScrollPane3.setViewportView(tblHistorialPrecio);

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel21, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE)
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel21)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
        );

        jtpProducto.addTab(resourceMap.getString("jPanel4.TabConstraints.tabTitle"), jPanel4); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(12, 12, 12)
                .addComponent(jtpProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 483, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(12, 12, 12))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jtpProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalirActionPerformed
        // TODO add your handling code here:
        // Cerramos el formulario
        this.setVisible(false);
    }//GEN-LAST:event_btnSalirActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        // TODO add your handling code here:
        // Variables Locales
        ProductoBean sqlBean=new ProductoBean();
        Vector datosProducto=new Vector();
        ProveedorBean sqlBeanProveedor=new ProveedorBean();
        Vector datosProveedor=new Vector();
        LineaBean sqlBeanLinea=new LineaBean();
        Vector datosLinea=new Vector();
        CategoriaBean sqlBeanCategoria=new CategoriaBean();
        Vector datosCategoria=new Vector();
        MarcaBean sqlBeanMarca=new MarcaBean();
        Vector datosMarca=new Vector();
        IvaBean sqlBeanIva=new IvaBean();
        Vector datosIva=new Vector();
        ProductoPrecioBean sqlBeanProductoPrecio=new ProductoPrecioBean();
        Vector datosProductoPrecio=new Vector();
        TipoPrecioBean sqlBeanTipoPrecio=new TipoPrecioBean();
        Vector datosTipoPrecio=new Vector();
        ProductoPrecioHistorialBean sqlBeanProductoPrecioHistorial=new ProductoPrecioHistorialBean();
        Vector datosProductoPrecioHistorial=new Vector();
        int idProveedor=0;
        int idLineaProducto=0;
        int idCategoria=0;
        int idMarca=0;
        int idIva=0;
        int idProducto=0;

        // Validamos el Tipo de Accion a Realizar
        switch(this.tipoAccion){
            // Alta de Producto
            case 1:
                // Validacion de Campos
                if (txtClaveProducto.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo del Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNombre.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Nombre del Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbProveedor.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el Proveedor","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbLineaProducto.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Linea de Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbCategoria.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Categoria");
                }else if (jcbMarca.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Marca","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtMaximo.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Cantidad Maxima","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtMinimo.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Cantidad Minima","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtPrecioCosto.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Precio de Costo","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbIva.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el IVA","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtPrecioVenta.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Precio de Venta","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else{
                    // Guardamos el Registro del Producto
                    // Obtenemos el Id del Producto
                    datosProducto=(new ProductoBLogic()).getDatosProductosNextId(sqlBean);
                    sqlBean=(ProductoBean) datosProducto.elementAt(0);
                    // Vaciamos los Datos
                    idProducto=Integer.parseInt(sqlBean.getIdProducto());

                    // Obtenemos el Id del Provedor
                    // Seteamos los Datos
                    sqlBeanProveedor.setNombreProveedor(jcbProveedor.getSelectedItem().toString());
                    datosProveedor=(new ProveedorBLogic()).getIdProveedorByNombre(sqlBeanProveedor);
                    sqlBeanProveedor=(ProveedorBean) datosProveedor.elementAt(0);
                    // Vaciamos los Datos
                    idProveedor=Integer.parseInt(sqlBeanProveedor.getIdProveedor());

                    // Obtenemos el Id Linea de Producto
                    // Seteamos los Datos
                    sqlBeanLinea.setNombreLinea(jcbLineaProducto.getSelectedItem().toString());
                    datosLinea=(new LineaBLogic()).getIdLineaProducto(sqlBeanLinea);
                    sqlBeanLinea=(LineaBean) datosLinea.elementAt(0);
                    // Vaciamos los Datos
                    idLineaProducto=Integer.parseInt(sqlBeanLinea.getIdLinea());

                    // Obtenemos el Id Categoria
                    // Seteamos los Datos
                    sqlBeanCategoria.setNombreCategoria(jcbCategoria.getSelectedItem().toString());
                    datosCategoria=(new CategoriaBLogic()).getIdCategoria(sqlBeanCategoria);
                    sqlBeanCategoria=(CategoriaBean) datosCategoria.elementAt(0);
                    // Vaciamos los Datos
                    idCategoria=Integer.parseInt(sqlBeanCategoria.getIdCategoria());

                    // Obtenemos el IdMarca
                    // Seteamos los Datos
                    sqlBeanMarca.setNombreMarca(jcbMarca.getSelectedItem().toString());
                    datosMarca=(new MarcaBLogic()).getDatosMarcaByNombre(sqlBeanMarca);
                    sqlBeanMarca=(MarcaBean) datosMarca.elementAt(0);
                    // Vaciamos los Datos
                    idMarca=Integer.parseInt(sqlBeanMarca.getIdMarca());

                    // Obtenemos el IdIva
                    // Seteamos los Datos
                    sqlBeanIva.setNombreIva(jcbIva.getSelectedItem().toString());
                    datosIva=(new IvaBLogic()).getIdIvaByNombre(sqlBeanIva);
                    sqlBeanIva=(IvaBean) datosIva.elementAt(0);
                    // Vaciamos los Datos
                    idIva=Integer.parseInt(sqlBeanIva.getIdIva());

                    // Insertamos el Registro del Producto
                    // Seteamos los Datos
                    sqlBean.setClaveProducto(txtClaveProducto.getText());
                    sqlBean.setNombreProducto(txtNombre.getText());
                    sqlBean.setIdProveedor(Integer.toString(idProveedor));
                    sqlBean.setIdLineaProducto(Integer.toString(idLineaProducto));
                    sqlBean.setIdCategoria(Integer.toString(idCategoria));
                    sqlBean.setIdMarca(Integer.toString(idMarca));
                    sqlBean.setMax(txtMaximo.getText());
                    sqlBean.setMin(txtMinimo.getText());
                    sqlBean.setPrecioCosto(txtPrecioCosto.getText());
                    sqlBean.setIdIva(Integer.toString(idIva));
                    sqlBean.setPrecioVenta(txtPrecioVenta.getText());
                    sqlBean.setDescuento(txtDescuento.getText());
                    sqlBean.setPrecioVentaIva(txtPrecioIva.getText());
                    datosProducto=(new ProductoBLogic()).execute(sqlBean);

                    // Insertamos Precios del Producto
                    // Ciclo FOR
                    for (int i=0;i<modelPrecios.getRowCount();i++){
                        // Insertamos Precios de Productos

                        // Obtenemos el Id Tipo Precio
                        // Seteamos los Datos
                        sqlBeanTipoPrecio.setNombreTipoPrecio(modelPrecios.getValueAt(i, 0).toString());
                        datosTipoPrecio=(new TipoPrecioBLogic()).getTipoPrecioIdByNombre(sqlBeanTipoPrecio);
                        sqlBeanTipoPrecio=(TipoPrecioBean) datosTipoPrecio.elementAt(0);


                        // Seteamos los Datos
                        sqlBeanProductoPrecio.setIdProducto(Integer.toString(idProducto));
                        sqlBeanProductoPrecio.setIdTipoPrecio(sqlBeanTipoPrecio.getIdTipoPrecio());
                        sqlBeanProductoPrecio.setPrecio(modelPrecios.getValueAt(i, 1).toString());
                        sqlBeanProductoPrecio.setComision(modelPrecios.getValueAt(i, 2).toString());
                        datosProductoPrecio=(new ProductoPrecioBLogic()).execute(sqlBeanProductoPrecio);
                    }

                    // Insertamos el Historial de Precios
                    // Seteamos los Datos
                    sqlBeanProductoPrecioHistorial.setIdProducto(Integer.toString(idProducto));
                    sqlBeanProductoPrecioHistorial.setPrecioCosto(txtPrecioCosto.getText());
                    datosProductoPrecioHistorial=(new ProductoPrecioHistorialBLogic()).execute(sqlBeanProductoPrecioHistorial);

                    // Evaluamos el Resultado
                    if (datosProducto.elementAt(0).equals("OK") && datosProductoPrecio.elementAt(0).equals("OK") && datosProductoPrecioHistorial.elementAt(0).equals("OK")){
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Producto Registrado Satisfactoriamente","Registro",JOptionPane.INFORMATION_MESSAGE);
                        // Desactivacion de Campos
                        txtClaveProducto.setEnabled(false);
                        txtNombre.setEnabled(false);
                        jcbProveedor.setEnabled(false);
                        jcbLineaProducto.setEnabled(false);
                        jcbCategoria.setEnabled(false);
                        jcbMarca.setEnabled(false);
                        txtMaximo.setEnabled(false);
                        txtMinimo.setEnabled(false);
                        txtPrecioCosto.setEnabled(false);
                        jcbIva.setEnabled(false);
                        txtPrecioVenta.setEnabled(false);
                        txtDescuento.setEnabled(false);
                        cmdCalcularPrecio.setEnabled(false);
                        // Desactivacion de Tablas
                        tblListaPrecio.setEnabled(false);
                    }else{
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Ocurrio un Problema al Momento de Registrar el Producto","Registro",JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                break;

            // Modificar Producto
            case 2:
                // Validacion de Campos
                if (txtClaveProducto.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo del Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNombre.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Nombre del Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbProveedor.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el Proveedor","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbLineaProducto.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Linea de Producto","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbCategoria.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Categoria");
                }else if (jcbMarca.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Marca","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtMaximo.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Cantidad Maxima","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtMinimo.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Cantidad Minima","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtPrecioCosto.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Precio de Costo","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbIva.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el IVA","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtPrecioVenta.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Precio de Venta","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else{
                    // Modificamos el Registro del Producto

                    // Obtenemos el Id del Provedor
                    // Seteamos los Datos
                    sqlBeanProveedor.setNombreProveedor(jcbProveedor.getSelectedItem().toString());
                    datosProveedor=(new ProveedorBLogic()).getIdProveedorByNombre(sqlBeanProveedor);
                    sqlBeanProveedor=(ProveedorBean) datosProveedor.elementAt(0);
                    // Vaciamos los Datos
                    idProveedor=Integer.parseInt(sqlBeanProveedor.getIdProveedor());

                    // Obtenemos el Id Linea de Producto
                    // Seteamos los Datos
                    sqlBeanLinea.setNombreLinea(jcbLineaProducto.getSelectedItem().toString());
                    datosLinea=(new LineaBLogic()).getIdLineaProducto(sqlBeanLinea);
                    sqlBeanLinea=(LineaBean) datosLinea.elementAt(0);
                    // Vaciamos los Datos
                    idLineaProducto=Integer.parseInt(sqlBeanLinea.getIdLinea());

                    // Obtenemos el Id Categoria
                    // Seteamos los Datos
                    sqlBeanCategoria.setNombreCategoria(jcbCategoria.getSelectedItem().toString());
                    datosCategoria=(new CategoriaBLogic()).getIdCategoria(sqlBeanCategoria);
                    sqlBeanCategoria=(CategoriaBean) datosCategoria.elementAt(0);
                    // Vaciamos los Datos
                    idCategoria=Integer.parseInt(sqlBeanCategoria.getIdCategoria());

                    // Obtenemos el IdMarca
                    // Seteamos los Datos
                    sqlBeanMarca.setNombreMarca(jcbMarca.getSelectedItem().toString());
                    datosMarca=(new MarcaBLogic()).getDatosMarcaByNombre(sqlBeanMarca);
                    sqlBeanMarca=(MarcaBean) datosMarca.elementAt(0);
                    // Vaciamos los Datos
                    idMarca=Integer.parseInt(sqlBeanMarca.getIdMarca());

                    // Obtenemos el IdIva
                    // Seteamos los Datos
                    sqlBeanIva.setNombreIva(jcbIva.getSelectedItem().toString());
                    datosIva=(new IvaBLogic()).getIdIvaByNombre(sqlBeanIva);
                    sqlBeanIva=(IvaBean) datosIva.elementAt(0);
                    // Vaciamos los Datos
                    idIva=Integer.parseInt(sqlBeanIva.getIdIva());

                    // Actualizamos el Registro del Producto
                    // Seteamos los Datos
                    sqlBean.setIdProducto(this.idProducto);
                    sqlBean.setClaveProducto(txtClaveProducto.getText());
                    sqlBean.setNombreProducto(txtNombre.getText());
                    sqlBean.setIdProveedor(Integer.toString(idProveedor));
                    sqlBean.setIdLineaProducto(Integer.toString(idLineaProducto));
                    sqlBean.setIdCategoria(Integer.toString(idCategoria));
                    sqlBean.setIdMarca(Integer.toString(idMarca));
                    sqlBean.setMax(txtMaximo.getText());
                    sqlBean.setMin(txtMinimo.getText());
                    sqlBean.setPrecioCosto(txtPrecioCosto.getText());
                    sqlBean.setIdIva(Integer.toString(idIva));
                    sqlBean.setPrecioVenta(txtPrecioVenta.getText());
                    sqlBean.setDescuento(txtDescuento.getText());
                    sqlBean.setPrecioVentaIva(txtPrecioIva.getText());
                    datosProducto=(new ProductoBLogic()).actualizaDatosProducto(sqlBean);

                    // Actualizamos los Precios del Producto
                    // Evaluamos si Existe la Lista de Precios
                    // Seleamos los Datos
                    sqlBeanProductoPrecio.setIdProducto(this.idProducto);
                    datosProductoPrecio=(new ProductoPrecioBLogic()).getExistenciaPreciosProducto(sqlBeanProductoPrecio);
                    sqlBeanProductoPrecio=(ProductoPrecioBean) datosProductoPrecio.elementAt(0);
                    // Evaluamos el Resultado
                    if (sqlBeanProductoPrecio.getNoRegistros().equalsIgnoreCase("0")){
                        // Insertamos Precios del Producto
                        // Ciclo FOR
                        for (int i=0;i<modelPrecios.getRowCount();i++){
                            // Insertamos Precios de Productos

                            // Obtenemos el Id Tipo Precio
                            // Seteamos los Datos
                            sqlBeanTipoPrecio.setNombreTipoPrecio(modelPrecios.getValueAt(i, 0).toString());
                            datosTipoPrecio=(new TipoPrecioBLogic()).getTipoPrecioIdByNombre(sqlBeanTipoPrecio);
                            sqlBeanTipoPrecio=(TipoPrecioBean) datosTipoPrecio.elementAt(0);


                            // Seteamos los Datos
                            sqlBeanProductoPrecio.setIdProducto(this.idProducto);
                            sqlBeanProductoPrecio.setIdTipoPrecio(sqlBeanTipoPrecio.getIdTipoPrecio());
                            sqlBeanProductoPrecio.setPrecio(modelPrecios.getValueAt(i, 1).toString());
                            sqlBeanProductoPrecio.setComision(modelPrecios.getValueAt(i, 2).toString());
                            datosProductoPrecio=(new ProductoPrecioBLogic()).execute(sqlBeanProductoPrecio);
                        }
                    }else{
                        // Actualizamos Precios del Producto
                        // Ciclo FOR
                        for (int i=0;i<modelPrecios.getRowCount();i++){
                            // Actualizamos Precios de Productos
                            
                            // Obtenemos el Id Tipo Precio
                            // Seteamos los Datos
                            sqlBeanTipoPrecio.setNombreTipoPrecio(modelPrecios.getValueAt(i, 0).toString());
                            datosTipoPrecio=(new TipoPrecioBLogic()).getTipoPrecioIdByNombre(sqlBeanTipoPrecio);
                            sqlBeanTipoPrecio=(TipoPrecioBean) datosTipoPrecio.elementAt(0);
                            
                            // Seteamos los Datos
                            sqlBeanProductoPrecio.setIdProducto(this.idProducto);
                            sqlBeanProductoPrecio.setIdTipoPrecio(sqlBeanTipoPrecio.getIdTipoPrecio());
                            sqlBeanProductoPrecio.setPrecio(modelPrecios.getValueAt(i, 1).toString());
                            sqlBeanProductoPrecio.setComision(modelPrecios.getValueAt(i, 2).toString());
                            datosProductoPrecio=(new ProductoPrecioBLogic()).actualizaDatosProductosPrecio(sqlBeanProductoPrecio);
                            
                        }
                    }

                    // Insertamos el Historial de Precios
                    // Seteamos los Datos
                    sqlBeanProductoPrecioHistorial.setIdProducto(this.idProducto);
                    sqlBeanProductoPrecioHistorial.setPrecioCosto(txtPrecioCosto.getText());
                    datosProductoPrecioHistorial=(new ProductoPrecioHistorialBLogic()).execute(sqlBeanProductoPrecioHistorial);

                    // Evaluamos el Resultado
                    if (datosProducto.elementAt(0).equals("OK") && datosProductoPrecio.elementAt(0).equals("OK") && datosProductoPrecioHistorial.elementAt(0).equals("OK")){
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Producto Actualizado Satisfactoriamente","Modificación",JOptionPane.INFORMATION_MESSAGE);
                        // Desactivacion de Campos
                        txtClaveProducto.setEnabled(false);
                        txtNombre.setEnabled(false);
                        jcbProveedor.setEnabled(false);
                        jcbLineaProducto.setEnabled(false);
                        jcbCategoria.setEnabled(false);
                        jcbMarca.setEnabled(false);
                        txtMaximo.setEnabled(false);
                        txtMinimo.setEnabled(false);
                        txtPrecioCosto.setEnabled(false);
                        jcbIva.setEnabled(false);
                        txtPrecioVenta.setEnabled(false);
                        txtDescuento.setEnabled(false);
                        cmdCalcularPrecio.setEnabled(false);
                        // Desactivacion de Tablas
                        tblListaPrecio.setEnabled(false);
                    }else{
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Ocurrio un Problema al Momento de Actualizar el Producto","Modificación",JOptionPane.ERROR_MESSAGE);
                    }
                }
                break;
        }
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void cmdCalcularPrecioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCalcularPrecioActionPerformed
        // TODO add your handling code here:
        // Variables Locales
        IvaBean sqlBeanIva=new IvaBean();
        Vector ivas=new Vector();
        Double iva;
        Double precioVenta;
        Double precioVentaIva;

        // Obtenemos el Porcentaje de Iva
        // Evaluamos el Iva Seleccionado
        if (jcbIva.getSelectedIndex()!=0){
            // Seteamos los Datos
            sqlBeanIva.setNombreIva(jcbIva.getSelectedItem().toString());
            ivas=(new IvaBLogic()).getIvaByNombre(sqlBeanIva);
            sqlBeanIva=(IvaBean) ivas.elementAt(0);
            // Evaluamos el Iva Seleccionado

            // Vaciamos el Porcentaje de Iva
            iva=Double.parseDouble(sqlBeanIva.getIva());
        }else{
            // Vaciamos el Porcentaje de Iva
            iva=0.0;
        }

        // Calculamos el Precio de Venta
        precioVenta=round(Double.parseDouble(txtPrecioCosto.getText())+(Double.parseDouble(txtPrecioCosto.getText())*iva),2);
        // Calculamos el Precio de Venta (c/iva)
        precioVentaIva=round(Double.parseDouble(txtPrecioCosto.getText())+(Double.parseDouble(txtPrecioCosto.getText())*iva)-Double.parseDouble(txtDescuento.getText()),2);

        // Asignamos el Precio de Venta
        txtPrecioVenta.setText(Double.toString(precioVenta));
        // Calculamos el Preciode Venta (c/iva)
        txtPrecioIva.setText(Double.toString(precioVentaIva));

    }//GEN-LAST:event_cmdCalcularPrecioActionPerformed

    private void txtNombreFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNombreFocusLost
        // TODO add your handling code here:
        txtNombre.setText(txtNombre.getText().toUpperCase());
    }//GEN-LAST:event_txtNombreFocusLost

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnSalir;
    private javax.swing.JButton cmdCalcularPrecio;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JComboBox jcbCategoria;
    private javax.swing.JComboBox jcbIva;
    private javax.swing.JComboBox jcbLineaProducto;
    private javax.swing.JComboBox jcbMarca;
    private javax.swing.JComboBox jcbProveedor;
    private javax.swing.JTabbedPane jtpProducto;
    private javax.swing.JTable tblHistorialPrecio;
    private javax.swing.JTable tblListaExistencia;
    private javax.swing.JTable tblListaPrecio;
    private javax.swing.JTextField txtClaveProducto;
    private javax.swing.JTextField txtDescuento;
    private javax.swing.JTextField txtMaximo;
    private javax.swing.JTextField txtMinimo;
    private javax.swing.JTextField txtNombre;
    private javax.swing.JTextField txtPrecioCosto;
    private javax.swing.JTextField txtPrecioIva;
    private javax.swing.JTextField txtPrecioVenta;
    // End of variables declaration//GEN-END:variables

}
